一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分)
在考生目录下完成如下操作:
1. 创建一个新的项目sdb_p,并在该项目中创建数据库sdb。
2. 将考生文件夹下的自由表student和sc添加到sdb数据库中。
3. 在sdb数据库中建立表course,表结构如下:
字段名 类型宽度
课程号 字符型 2
课程名 字符型20
学时 数值型 2
随后向表中输入6条记录,记录内容如下(注意大小写):
课程号 课程名 学时
c1 C++ 60
c2 Visual FoxPro 80
c3 数据结构 50
c4 JAVA 40
c5 Visual BASIC 40
c6 OS 60
4. 为course表创建一个主索引,索引名为cno、索引表达式为"课程号"。
解答:
1、 菜单方式略,可使用以下命令方式:
CREATE PROJECT sdb_p
Create database sdb
Application.Projects[1].Files.Add('sdb.dbc')
(上行命令的作用是:将建好数据库添加到项目中)
2、 打开新建好的数据库。用菜单方式或命令方法添加到当前数据库中。命令为:
add table student
add table sc
3、菜单方式:打开数据库设计器,在空白处单击鼠标右键,在弹出的快捷菜单中单击“新建”,在表设计器中输入字段名、类型、宽度等,随后单击“确定”按钮,最后输入记录。
命令方式:create table course (课程号 C(2),课程名 C(20),学时 N(2))
insert table course value (“c1”,”C++”,60)
insert table course value (“c2”,”Visual FoxPro”,80)
insert table course value (“c3”,”数据结构”,50)
insert table course value (“c4”,”JAVA”,40)
insert table course value (“c5”,”Visual BASIC”,40)
insert table course value (“c6”,”OS”,60)
4、用菜单方法来完成操作。打开Course表的设计器。在“索引”页中进行操作,结果如下图:

二、简单应用(2小题,每题20分,计40分)
在考生文件夹下完成如下简单应用:
1. 根据sdb数据库中的表用SQL SELECT命令查询学生的学号、姓名、课程名和成绩,结果按"课程名"升序排序,"课程名"相同时按"成绩"降序排序,并将查询结果存储到sclist表中。
解答
操作方法略,命令方法如下:
SELECT Student.学号, Student.姓名, Course.课程名, Sc.成绩;
FROM sdb!sc INNER JOIN sdb!course INNER JOIN sdb!student ;
ON Sc.学号 = Student.学号 ON Sc.课程号 = Course.课程号;
ORDER BY Course.课程名, Sc.成绩 DESC INTO TABLE sclist.dbf
2. 使用表单向导选择student表生成一个名为form1的表单。要求选择student表中所有字段,表单样式为"阴影式";按钮类型为"图片按钮";排序字段选择"学号"(升序);表单标题为"学生基本数据输入维护"。
解答:首选单击“新建”菜单或“新建”工具,选择表单,选择“向导”的方式,则弹出“向导选取”对话框,选择表单向导,单击“确定”按钮,按向导要求设置每一步。
三、综合应用(1小题,计30分)
1.打开基本操作中建立的数据库sdb,使用SQL的CREATE VIEW命令定义一个名称为SVIEW的视图,该视图的SELECT语句完成查询:选课门数是3门以上(不包括3门)的每个学生的学号、姓名、平均成绩、最低分和选课门数,并按"平均成绩"降序排序。最后将定义视图的命令代码存放到命令文件T1.PRG中并执行该文件。
接着利用报表向导制作一个报表。要求选择SVIEW视图中所有字段;记录不分组;报表样式为"随意式";排序字段为"学号"(升序);报表标题为"学生成绩统计一览表";报表文件名为p_student。
2.设计一个名称为form2的表单,表单上有"浏览"(名称为Command1)和"打印"(Command2)两个命令按钮。鼠标单击"浏览"命令按钮时,先打开数据库sdb,然后执行SELECT语句查询前面定义的SVIEW视图中的记录(两条命令,不可以有多余命令);鼠标单击"打印"命令按钮时,调用报表文件p_student浏览报表的内容(一条命令,不可以有多余命令)。
解答:
1、 方法1:菜单方式:在打开数据库后,使用“视图设计器”完成。主要步骤说明如下:
字段选取时,除Student.学号, Student.姓名直接选取,其余的先在“函数和表达式”框中分别输入avg(Sc.成绩) as 平均成绩,min(Sc.成绩) as 最低分,count(course.课程名)as 选课门数,再单击“添加”按钮;在“分组依据”选项卡中添加“Student.学号”、然后单击“满足条件”按钮,输入条件“COUNT(Course.课程名) > 3”,在“排序依据”选项卡中添加“学号”(升序),最后单击“显示SQL窗口”或单击右键,在快捷菜单中单击“查看SQL”,复制SQL语句,在命令窗口中输入命令:MODIFY COMMAND T1,在打开的命令编辑窗口中,粘贴刚复制的SQL语句,并加上语句CREATE VIEW SVIEW AS。
方法2:命令方式:
在命令窗口中,输入命令:MODIFY COMMAND T1.PRG后,在打开的命令编辑窗口中,直接输入下列命令:
CREATE VIEW SVIEW AS SELECT Student.学号, Student.姓名, ;
avg(Sc.成绩) as 平均成绩,min(Sc.成绩) as 最低分,count(course.课程名)as 选课门数;
FROM sdb!course INNER JOIN sdb!sc INNER JOIN sdb!student ;
ON Sc.学号 = Student.学号 and Course.课程号 = Sc.课程号;
GROUP BY Student.学号 HAVING COUNT(Course.课程名) > 3 ORDER BY 3 DESC
利用报表向导可完成报表的设计,注意报表标题为“学生成绩统计一览表”,报表文件名为“p_student”。
2、单击“文件”菜单,单击“新建”命令,选择“表单”,输入表单文件名“form2”,在表单设计器中添加两个命令按钮,打开其属性窗口,将command1和command2中的caption属性分别改为“浏览”、“打印”,分别双击命令按钮,打开代码窗口,写入代码。

在“浏览”按钮里设置Click事件代码如下:
open database sdb
select * from sview
在“打印”按钮里设置Click事件代码如下:
Report form p_student Preview
注意:保存的表单名为:form2.scx
附相关数据表如下:
